The present invention generally relates to adaptation of virtualized computing environments. More particularly, the present invention relates to methods and systems providing automatic inference and adaptation of virtualized computing environments.
Virtual machines (VMs) interconnected with virtual networks are an extremely effective platform for service-oriented computing, utility computing, distributed computing, parallel computing, and high performance computing, providing benefits of simplicity and flexibility to both users and providers. Such a platform also provides key opportunities for adaptation, for example.
Virtual machines can greatly simplify grid and distributed computing by lowering the level of abstraction from traditional units of work, such as jobs, processes, or remote procedure calls (RPCs) to that of a raw machine. This abstraction makes resource management easier from the perspective of resource providers and results in lower complexity and greater flexibility for resource users. A virtual machine image that includes preinstalled versions of the correct operating system, libraries, middleware and applications can simplify deployment of new software.
Grid computing uses multiple sites with different network management and security philosophies, often spread over the wide area. Running a virtual machine on a remote site is equivalent to visiting the site and connecting to a new machine. The nature of the network presence (e.g., active Ethernet port, traffic not blocked, mutable Internet Protocol (IP) address, forwarding of its packets through firewalls, etc.) the machine gets, or whether the machine gets a network presence at all, depends upon the policy of the site. Not all connections between machines are possible and not all paths through the network are free. The impact of this variation is further exacerbated as the number of sites is increased, and if virtual machines are permitted to migrate from site to site.
Over the past decade, wide-area distributed computing has emerged as a powerful computing paradigm. However, developing applications for such environments has remained a challenge, primarily due to the issues involved in designing automatic, dynamic and runtime adaptation schemes. Despite many efforts, adaptation in distributed applications has remained application specific and dependent on direct involvement of the developer or user. Such custom adaptation involving the user or developer is extremely difficult due to the dynamic nature of application demands and resource availability.